package com.isoft.c2team3service2.service;

import com.isoft.c2team3service2.dto.ArtistDTO;
import com.isoft.c2team3service2.dto.FollowUserDTO;
import com.isoft.c2team3service2.entity.Artist;
import com.isoft.c2team3service2.entity.User;
import com.isoft.c2team3service2.entity.UserDTO;
import com.isoft.c2team3service2.service.impl.BusinessException;


import java.util.List;

public interface FollowService {

    /**
     * 关注用户
     * @param followedUserId 被关注用户ID
     * @throws BusinessException 关注异常时抛出
     */
    void followUser(Integer followedUserId) throws BusinessException;

    /**
     * 取消关注用户
     * @param followedUserId 被取消关注用户ID
     * @throws BusinessException 取消关注异常时抛出
     */
    void unfollowUser(Integer followedUserId) throws BusinessException;

    /**
     * 关注艺人
     * @param artistId 被关注艺人ID
     * @throws BusinessException 关注异常时抛出
     */
    void followArtist(Integer artistId) throws BusinessException;

    /**
     * 取消关注艺人
     * @param artistId 被取消关注艺人ID
     * @throws BusinessException 取消关注异常时抛出
     */
    void unfollowArtist(Integer artistId) throws BusinessException;

    /**
     * 获取用户关注的所有用户
     * @return 关注用户列表
     */
    List<FollowUserDTO> getFollowedUsers();

    /**
     * 获取用户关注的所有艺人
     * @return 关注艺人列表
     */
    List<ArtistDTO> getFollowedArtists();
}